/**
 * SPDX-FileCopyrightText: 2023-2025 Sangfor Technologies Inc.
 * SPDX-License-Identifier: Mulan PSL v2
 */
import { trim } from 'src/util/format';
import { getUTF8Length } from 'src/util/lang';
const MAX_LEN = 255;

// 严格的约束
// const REG = /^(?![.\-])[.\-_a-zA-Z0-9]+$/;
const REG = /^[a-z0-9]([-a-z0-9]*[a-z0-9]){2,}$/;

/**
 * 用于处理用户名的校验
 * @param { string } value 需要验证的用户名
 * @param { function } defaultValidator 其他验证函数
 * @returns { boolean } 是否通过验证
 */
export default function (value, defaultValidator) {
    if (!value) {
        return true;
    }
    value = trim(value);
    let length = getUTF8Length(value);
    if (length > MAX_LEN) {
        return _('用户名最大允许 255 个字符，或者 85 个汉字', MAX_LEN);
    }
    if (!REG.test(value)) {
        return _('用户名只能包含小写字母、数字、横杠（横杠不能为首字符），而且最少为3个字符（不含横杠）');
    }
    return defaultValidator ? defaultValidator(value) : true;
};
